#include "cpu/exec/template-start.h"

#define instr test

static void do_execute () {    

    DATA_TYPE_S result = op_dest->val & op_src->val;
	update_eflags_pf_zf_sf((DATA_TYPE_S)result);
	cpu.eflags.CF = result > op_dest->val;
	cpu.eflags.OF = MSB((op_dest->val ^ op_src->val) & (op_dest->val ^ result));
    print_asm("%d",cpu.eflags.ZF);
    //print_asm_template2();
}

make_instr_helper(r2rm)
make_instr_helper(i2rm)
make_instr_helper(i2a)
#include "cpu/exec/template-end.h"
/*将两个操作数进行按位AND,设结果是TEMP
　　SF = 将结果的最高位赋给SF标志位，例如结果最高位是1，SF就是1
　　看TEMP是不是0
　　如果TEMP是0，ZF位置1
　　如果TEMP不是0，ZF位置0　　
　　PF = 将TEMP的低8位，从第0位开始，逐位取同或。
        也就是第0位与第1位的同或结果，去和第2位同或，
        结果再去和第3位同或....直到和第7位同或。
　　CF位置0
　　OF位置0
　　AF位是未定的，鬼知道是什么
　　
　　下面我们来看看这么做是否合理：
　　SF位是符号位。对于有符号的数据，最高位正好是符号位，合理。
　　ZF位记录操作的结果是否是0， 合理。
        PF位是奇偶校验位，如果结果低8位中1的个数是偶数，PF=1；否则PF=0.*/
